package com.itheima.provider;

import com.alibaba.dubbo.config.annotation.Service;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.itheima.common.entity.PageResult;
import com.itheima.common.entity.QueryPageBean;
import com.itheima.common.entity.Result;
import com.itheima.mapper.CheckItemDao;
import com.itheima.pojo.CheckItem;
import com.itheima.service.CheckItemService;
import org.apache.poi.ss.formula.functions.Count;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * @author 司军强
 * @version 1.0.0
 * @date 2019/7/17 :17:03
 * @description
 **/
//添加的注解 接口类型的服务
// 添加事务管理注解 对所有的方法
@Service(interfaceClass = CheckItemService.class)
@Transactional
public class CheckItemServiceImpl implements CheckItemService {

    //  添加dao 属性注解
    @Autowired
    private CheckItemDao checkItemDao;


    //新增检查项目的方法
    @Override
    public void add(CheckItem checkItem) {
        //调用dao接口里面的方法 将数据传进去
        checkItemDao.add(checkItem);
    }


    //分页查询的方法
    @Override
    public PageResult findPage(QueryPageBean queryPageBean) {


        //使用分页插件
        Page page = PageHelper.startPage(queryPageBean.getCurrentPage(), queryPageBean.getPageSize());
        //调用dao 根据条件查询数据
        List<CheckItem> list = checkItemDao.findPage(queryPageBean.getQueryString());
        //将结果返回
        return new PageResult(page.getTotal(), list);


    }


    //根据id 查询
    @Override
    public void delete(Integer id) {

        //进行判断 如果 检查项被检查组引用 则不能删除
        Integer count = checkItemDao.findCount(id);
        if (null != count && count > 0) {
            //不能删除
            throw new RuntimeException("不能删除");
            } else {
            //调用dao层里面的方法
            checkItemDao.delete(id);

        }


    }

    //编辑中的查询方法
    @Override
    public CheckItem edit(Integer id) {
        return checkItemDao.edit(id);
    }


    //编辑中的修改方法
    @Override
    public void set(CheckItem checkItem) {
        checkItemDao.set(checkItem);
    }



    //检查组 先将数据回显
    @Override
    public List<CheckItem> findAll() {

       return checkItemDao.findAll();



    }





}
